Media servers are employed in telephony networks, and perform a variety of basic and enhanced services which include conferencing, audio and video interactive voice response (IVR), transcoding, audio and video announcements, and other advanced speech services. They may also be employed in networks which provide video conferencing services, as well as typical data exchange services of the sort which occurs over the Internet, over virtual private networks, within wide area networks and local area networks, and the like. In all cases, data exchange and processing performed by the media server is based on packet processing with fixed maximum processing time requirements.
Advances in hardware architectures, enabling multi-core and multi-processor computation, presents new challenges for software architectures and parallel processing algorithms. Incremental additions of parallel processing cores do not necessarily translate into equivalent linear increases in the amount of processing capacity. A given algorithm or processing task typically consists of some sub-sections which may be executed in parallel while other sub-sections must be executed in sequence. The relative proportion of serial and parallel execution sections governs the aggregate processing capacity of a system consisting of multiple parallel processing units. The relationship between the number of parallel processing units (N), proportion of parallelizable instructions (P), and the maximum speedup of the system is defined by Amdahl's Law.
                    [        Amdahl        ’            ⁢      s      ⁢                          ⁢      Law        ]              MAXIMUM      ⁢                          ⁢      SPEEDUP        <=          S      +                        P          /                      (                          S              +                              P                /                N                                      )                          ⁢                                  ⁢        or                                MAXIMUM        ⁢                                  ⁢        SPEEDUP            <=                        1                      S            +                                          (                                  1                  -                  S                                )                            /              N                                      .                                  ⁢        S              =          percentage      ⁢                          ⁢      of      ⁢                          ⁢      serial      ⁢                          ⁢      execution      ⁢                          ⁢      code            P    =          percentage      ⁢                          ⁢      of      ⁢                          ⁢      parallel      ⁢                          ⁢      execution      ⁢                          ⁢      code            N    =          Number      ⁢                          ⁢      of      ⁢                          ⁢      Processors            1    =          S      +      P      
Regardless of the total number of available processors (N), if all code sections require serial execution (S=1) then maximum speedup factor remains at 1. Theoretically, if all processing could be parallelized (P=1), then the maximum speedup is N, equivalent to the number of parallel processors available.
Amdahl's Law describes the general rules for taking advantage of multiple parallel processing cores for applications requiring large scale numerical data processing. However, the complex issues of real-time processing, deterministic response times, and load balancing across multiple cores are not addressed. These issues are essential for telecommunication applications.